{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "fd140698",
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入pandas，并重命名为pd\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets\n",
    "#导入数据集拆分工具\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score,mean_squared_error\n",
    "# 导入pytorch包\n",
    "import torch\n",
    "from torch.utils import data\n",
    "from d2l import torch as d2l\n",
    "from torch import nn\n",
    "# 设置显示中文字体\n",
    "plt.rcParams[\"font.sans-serif\"] = [\"SimHei\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "4eede143",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据预处理\n",
    "#导入数据表\n",
    "#导入 covid.test 表\n",
    "covid_test = pd.read_csv('data/COVID_19/covid.test.csv', sep = ',')\n",
    "#导入 covid.train 表\n",
    "covid_train = pd.read_csv('data/COVID_19/covid.train.csv', sep = ',')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "8a0862c6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AL</th>\n",
       "      <th>AK</th>\n",
       "      <th>AZ</th>\n",
       "      <th>AR</th>\n",
       "      <th>CA</th>\n",
       "      <th>CO</th>\n",
       "      <th>CT</th>\n",
       "      <th>FL</th>\n",
       "      <th>GA</th>\n",
       "      <th>ID</th>\n",
       "      <th>...</th>\n",
       "      <th>shop.2</th>\n",
       "      <th>restaurant.2</th>\n",
       "      <th>spent_time.2</th>\n",
       "      <th>large_event.2</th>\n",
       "      <th>public_transit.2</th>\n",
       "      <th>anxious.2</th>\n",
       "      <th>depressed.2</th>\n",
       "      <th>felt_isolated.2</th>\n",
       "      <th>worried_become_ill.2</th>\n",
       "      <th>worried_finances.2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>52.071090</td>\n",
       "      <td>8.624001</td>\n",
       "      <td>29.374792</td>\n",
       "      <td>5.391413</td>\n",
       "      <td>2.754804</td>\n",
       "      <td>19.695098</td>\n",
       "      <td>13.685645</td>\n",
       "      <td>24.747837</td>\n",
       "      <td>66.194950</td>\n",
       "      <td>44.873473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>58.742461</td>\n",
       "      <td>21.720187</td>\n",
       "      <td>41.375784</td>\n",
       "      <td>9.450179</td>\n",
       "      <td>3.150088</td>\n",
       "      <td>22.075715</td>\n",
       "      <td>17.302077</td>\n",
       "      <td>23.559622</td>\n",
       "      <td>57.015009</td>\n",
       "      <td>38.372829</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>59.109045</td>\n",
       "      <td>20.123959</td>\n",
       "      <td>40.072556</td>\n",
       "      <td>8.781522</td>\n",
       "      <td>2.888209</td>\n",
       "      <td>23.920870</td>\n",
       "      <td>18.342506</td>\n",
       "      <td>24.993341</td>\n",
       "      <td>55.291498</td>\n",
       "      <td>38.907257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>55.442267</td>\n",
       "      <td>16.083529</td>\n",
       "      <td>36.977612</td>\n",
       "      <td>5.199286</td>\n",
       "      <td>2.575347</td>\n",
       "      <td>21.073800</td>\n",
       "      <td>12.087171</td>\n",
       "      <td>18.608723</td>\n",
       "      <td>67.036197</td>\n",
       "      <td>43.142779</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>60.588783</td>\n",
       "      <td>19.503010</td>\n",
       "      <td>42.631236</td>\n",
       "      <td>11.549771</td>\n",
       "      <td>8.530551</td>\n",
       "      <td>15.896575</td>\n",
       "      <td>11.781634</td>\n",
       "      <td>15.065228</td>\n",
       "      <td>61.196518</td>\n",
       "      <td>43.574676</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>56.762931</td>\n",
       "      <td>21.494159</td>\n",
       "      <td>44.202567</td>\n",
       "      <td>14.996865</td>\n",
       "      <td>2.291745</td>\n",
       "      <td>17.740003</td>\n",
       "      <td>12.822676</td>\n",
       "      <td>18.123344</td>\n",
       "      <td>60.417531</td>\n",
       "      <td>37.156229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>57.888461</td>\n",
       "      <td>16.770893</td>\n",
       "      <td>37.373472</td>\n",
       "      <td>7.169675</td>\n",
       "      <td>2.631595</td>\n",
       "      <td>20.587449</td>\n",
       "      <td>15.960166</td>\n",
       "      <td>23.710310</td>\n",
       "      <td>58.758735</td>\n",
       "      <td>38.673787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>57.589848</td>\n",
       "      <td>16.761311</td>\n",
       "      <td>36.874822</td>\n",
       "      <td>11.046907</td>\n",
       "      <td>1.912310</td>\n",
       "      <td>16.800220</td>\n",
       "      <td>13.280423</td>\n",
       "      <td>22.423640</td>\n",
       "      <td>60.934851</td>\n",
       "      <td>43.122513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>891</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>57.966384</td>\n",
       "      <td>22.696669</td>\n",
       "      <td>45.350415</td>\n",
       "      <td>20.343487</td>\n",
       "      <td>2.385330</td>\n",
       "      <td>16.528265</td>\n",
       "      <td>15.092539</td>\n",
       "      <td>17.476063</td>\n",
       "      <td>54.862386</td>\n",
       "      <td>44.016255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>892</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>55.920650</td>\n",
       "      <td>17.002257</td>\n",
       "      <td>37.749348</td>\n",
       "      <td>9.955671</td>\n",
       "      <td>1.731796</td>\n",
       "      <td>18.555496</td>\n",
       "      <td>13.776335</td>\n",
       "      <td>21.217106</td>\n",
       "      <td>66.870763</td>\n",
       "      <td>37.930859</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>893 rows × 93 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      AL   AK   AZ   AR   CA   CO   CT   FL   GA   ID  ...     shop.2  \\\n",
       "0    0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  ...  52.071090   \n",
       "1    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  58.742461   \n",
       "2    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  59.109045   \n",
       "3    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  55.442267   \n",
       "4    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  60.588783   \n",
       "..   ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...        ...   \n",
       "888  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  56.762931   \n",
       "889  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  57.888461   \n",
       "890  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  ...  57.589848   \n",
       "891  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  57.966384   \n",
       "892  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  55.920650   \n",
       "\n",
       "     restaurant.2  spent_time.2  large_event.2  public_transit.2  anxious.2  \\\n",
       "0        8.624001     29.374792       5.391413          2.754804  19.695098   \n",
       "1       21.720187     41.375784       9.450179          3.150088  22.075715   \n",
       "2       20.123959     40.072556       8.781522          2.888209  23.920870   \n",
       "3       16.083529     36.977612       5.199286          2.575347  21.073800   \n",
       "4       19.503010     42.631236      11.549771          8.530551  15.896575   \n",
       "..            ...           ...            ...               ...        ...   \n",
       "888     21.494159     44.202567      14.996865          2.291745  17.740003   \n",
       "889     16.770893     37.373472       7.169675          2.631595  20.587449   \n",
       "890     16.761311     36.874822      11.046907          1.912310  16.800220   \n",
       "891     22.696669     45.350415      20.343487          2.385330  16.528265   \n",
       "892     17.002257     37.749348       9.955671          1.731796  18.555496   \n",
       "\n",
       "     depressed.2  felt_isolated.2  worried_become_ill.2  worried_finances.2  \n",
       "0      13.685645        24.747837             66.194950           44.873473  \n",
       "1      17.302077        23.559622             57.015009           38.372829  \n",
       "2      18.342506        24.993341             55.291498           38.907257  \n",
       "3      12.087171        18.608723             67.036197           43.142779  \n",
       "4      11.781634        15.065228             61.196518           43.574676  \n",
       "..           ...              ...                   ...                 ...  \n",
       "888    12.822676        18.123344             60.417531           37.156229  \n",
       "889    15.960166        23.710310             58.758735           38.673787  \n",
       "890    13.280423        22.423640             60.934851           43.122513  \n",
       "891    15.092539        17.476063             54.862386           44.016255  \n",
       "892    13.776335        21.217106             66.870763           37.930859  \n",
       "\n",
       "[893 rows x 93 columns]"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 去除id列\n",
    "covid_train1 = covid_train.drop('id',axis=1)\n",
    "# 去除id列\n",
    "test1 = covid_test.drop(['id'], axis=1)\n",
    "test1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "65c2b252",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AL</th>\n",
       "      <th>AK</th>\n",
       "      <th>AZ</th>\n",
       "      <th>AR</th>\n",
       "      <th>CA</th>\n",
       "      <th>CO</th>\n",
       "      <th>CT</th>\n",
       "      <th>FL</th>\n",
       "      <th>GA</th>\n",
       "      <th>ID</th>\n",
       "      <th>...</th>\n",
       "      <th>shop.2</th>\n",
       "      <th>restaurant.2</th>\n",
       "      <th>spent_time.2</th>\n",
       "      <th>large_event.2</th>\n",
       "      <th>public_transit.2</th>\n",
       "      <th>anxious.2</th>\n",
       "      <th>depressed.2</th>\n",
       "      <th>felt_isolated.2</th>\n",
       "      <th>worried_become_ill.2</th>\n",
       "      <th>worried_finances.2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>62.434539</td>\n",
       "      <td>23.812411</td>\n",
       "      <td>43.430423</td>\n",
       "      <td>16.151527</td>\n",
       "      <td>1.602635</td>\n",
       "      <td>15.409449</td>\n",
       "      <td>12.088688</td>\n",
       "      <td>16.702086</td>\n",
       "      <td>53.991549</td>\n",
       "      <td>43.604229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>62.024517</td>\n",
       "      <td>23.682974</td>\n",
       "      <td>43.196313</td>\n",
       "      <td>16.123386</td>\n",
       "      <td>1.641863</td>\n",
       "      <td>15.230063</td>\n",
       "      <td>11.809047</td>\n",
       "      <td>16.506973</td>\n",
       "      <td>54.185521</td>\n",
       "      <td>42.665766</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>62.116842</td>\n",
       "      <td>23.593983</td>\n",
       "      <td>43.362200</td>\n",
       "      <td>16.159971</td>\n",
       "      <td>1.677523</td>\n",
       "      <td>15.717207</td>\n",
       "      <td>12.355918</td>\n",
       "      <td>16.273294</td>\n",
       "      <td>53.637069</td>\n",
       "      <td>42.972417</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>61.294809</td>\n",
       "      <td>22.576992</td>\n",
       "      <td>42.954574</td>\n",
       "      <td>15.544373</td>\n",
       "      <td>1.578030</td>\n",
       "      <td>15.295650</td>\n",
       "      <td>12.218123</td>\n",
       "      <td>16.045504</td>\n",
       "      <td>52.446223</td>\n",
       "      <td>42.907472</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>60.664482</td>\n",
       "      <td>22.091433</td>\n",
       "      <td>43.290957</td>\n",
       "      <td>15.214655</td>\n",
       "      <td>1.641667</td>\n",
       "      <td>14.778802</td>\n",
       "      <td>12.417256</td>\n",
       "      <td>16.134238</td>\n",
       "      <td>52.560315</td>\n",
       "      <td>43.321985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2695</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>50.024971</td>\n",
       "      <td>15.090116</td>\n",
       "      <td>30.839219</td>\n",
       "      <td>7.849525</td>\n",
       "      <td>1.760094</td>\n",
       "      <td>14.617563</td>\n",
       "      <td>11.163213</td>\n",
       "      <td>18.742673</td>\n",
       "      <td>68.024690</td>\n",
       "      <td>38.920206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2696</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49.885129</td>\n",
       "      <td>14.779264</td>\n",
       "      <td>30.617100</td>\n",
       "      <td>7.754800</td>\n",
       "      <td>1.780730</td>\n",
       "      <td>14.513419</td>\n",
       "      <td>11.281241</td>\n",
       "      <td>18.539741</td>\n",
       "      <td>67.855755</td>\n",
       "      <td>39.224244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2697</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>50.056772</td>\n",
       "      <td>14.961085</td>\n",
       "      <td>30.595194</td>\n",
       "      <td>7.744075</td>\n",
       "      <td>1.921828</td>\n",
       "      <td>14.160990</td>\n",
       "      <td>11.163526</td>\n",
       "      <td>18.702564</td>\n",
       "      <td>67.731162</td>\n",
       "      <td>38.740651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2698</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49.620924</td>\n",
       "      <td>14.609582</td>\n",
       "      <td>30.420998</td>\n",
       "      <td>7.687974</td>\n",
       "      <td>1.992580</td>\n",
       "      <td>14.409427</td>\n",
       "      <td>11.330301</td>\n",
       "      <td>19.134697</td>\n",
       "      <td>67.795100</td>\n",
       "      <td>38.595125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2699</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49.510599</td>\n",
       "      <td>14.464053</td>\n",
       "      <td>30.469791</td>\n",
       "      <td>7.692942</td>\n",
       "      <td>1.966064</td>\n",
       "      <td>14.616400</td>\n",
       "      <td>11.522773</td>\n",
       "      <td>19.295834</td>\n",
       "      <td>68.284078</td>\n",
       "      <td>38.453820</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2700 rows × 93 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       AL   AK   AZ   AR   CA   CO   CT   FL   GA   ID  ...     shop.2  \\\n",
       "0     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  62.434539   \n",
       "1     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  62.024517   \n",
       "2     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  62.116842   \n",
       "3     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  61.294809   \n",
       "4     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  60.664482   \n",
       "...   ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...        ...   \n",
       "2695  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  50.024971   \n",
       "2696  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  49.885129   \n",
       "2697  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  50.056772   \n",
       "2698  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  49.620924   \n",
       "2699  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  49.510599   \n",
       "\n",
       "      restaurant.2  spent_time.2  large_event.2  public_transit.2  anxious.2  \\\n",
       "0        23.812411     43.430423      16.151527          1.602635  15.409449   \n",
       "1        23.682974     43.196313      16.123386          1.641863  15.230063   \n",
       "2        23.593983     43.362200      16.159971          1.677523  15.717207   \n",
       "3        22.576992     42.954574      15.544373          1.578030  15.295650   \n",
       "4        22.091433     43.290957      15.214655          1.641667  14.778802   \n",
       "...            ...           ...            ...               ...        ...   \n",
       "2695     15.090116     30.839219       7.849525          1.760094  14.617563   \n",
       "2696     14.779264     30.617100       7.754800          1.780730  14.513419   \n",
       "2697     14.961085     30.595194       7.744075          1.921828  14.160990   \n",
       "2698     14.609582     30.420998       7.687974          1.992580  14.409427   \n",
       "2699     14.464053     30.469791       7.692942          1.966064  14.616400   \n",
       "\n",
       "      depressed.2  felt_isolated.2  worried_become_ill.2  worried_finances.2  \n",
       "0       12.088688        16.702086             53.991549           43.604229  \n",
       "1       11.809047        16.506973             54.185521           42.665766  \n",
       "2       12.355918        16.273294             53.637069           42.972417  \n",
       "3       12.218123        16.045504             52.446223           42.907472  \n",
       "4       12.417256        16.134238             52.560315           43.321985  \n",
       "...           ...              ...                   ...                 ...  \n",
       "2695    11.163213        18.742673             68.024690           38.920206  \n",
       "2696    11.281241        18.539741             67.855755           39.224244  \n",
       "2697    11.163526        18.702564             67.731162           38.740651  \n",
       "2698    11.330301        19.134697             67.795100           38.595125  \n",
       "2699    11.522773        19.295834             68.284078           38.453820  \n",
       "\n",
       "[2700 rows x 93 columns]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = covid_train1.drop(['tested_positive.2'], axis=1)\n",
    "target = covid_train['tested_positive.2']\n",
    "train"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e58810e",
   "metadata": {},
   "source": [
    "#### 特征值选取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "6a331926",
   "metadata": {},
   "outputs": [],
   "source": [
    "# from sklearn.feature_selection import SelectKBest\n",
    "# from sklearn.feature_selection import f_regression\n",
    "# from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "6b6ad5c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# bestfeatures = SelectKBest(score_func=f_regression, k=30)\n",
    "# fit = bestfeatures.fit(train,target)\n",
    "# train_scores = pd.DataFrame(fit.scores_)\n",
    "# train_columns = pd.DataFrame(train.columns)\n",
    "# featureScores = pd.concat([train_columns,train_scores],axis=1)\n",
    "# featureScores.columns = ['Specs','Score'] \n",
    "# # 按照分数排序\n",
    "# featureScores = featureScores.sort_values(by='Score', ascending=False)\n",
    "# featureScores.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "82991166",
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 选取前30\n",
    "# bestfeatures = SelectKBest(score_func=f_regression, k=30)\n",
    "# fit = bestfeatures.fit(train,target)\n",
    "# cols = bestfeatures.get_support(indices=True)\n",
    "# cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "df688320",
   "metadata": {},
   "outputs": [],
   "source": [
    "# train = train.iloc[:,cols]\n",
    "# # 去除MA列\n",
    "# train1 = train.drop('MA',axis=1)\n",
    "# test2 = test1.iloc[:,cols]\n",
    "# # 去除MA列\n",
    "# test3 = test2.drop('MA',axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "6efaf74b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2700, 93)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train1.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "10cca330",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.16259392, -0.15892868, -0.16259392, ...,  2.05110099,\n",
       "         0.27716307,  0.10036909],\n",
       "       [-0.16259392, -0.15892868, -0.16259392, ...,  1.60871603,\n",
       "        -1.33826122, -1.3119887 ],\n",
       "       [-0.16259392, -0.15892868, -0.16259392, ...,  2.14250478,\n",
       "        -1.64155313, -1.19587641],\n",
       "       ...,\n",
       "       [-0.16259392, -0.15892868, -0.16259392, ...,  1.18577773,\n",
       "        -0.64847373, -0.28005199],\n",
       "       [-0.16259392, -0.15892868, -0.16259392, ..., -0.65625711,\n",
       "        -1.7170654 , -0.08587364],\n",
       "       [-0.16259392, -0.15892868, -0.16259392, ...,  0.73657275,\n",
       "         0.39608821, -1.408013  ]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "import numpy as np\n",
    "# 创建StandardScaler对象\n",
    "scaler = StandardScaler()\n",
    "# 对数据进行标准化处理\n",
    "train1 = scaler.fit_transform(train)\n",
    "train1\n",
    "# 对数据进行标准化处理\n",
    "test4 = scaler.fit_transform(test1)\n",
    "test4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "eabbaa98",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 6.2689, -0.1595, -0.1595,  ..., -0.9385, -1.7435, -0.1843],\n",
      "        [ 6.2689, -0.1595, -0.1595,  ..., -1.0105, -1.7123, -0.3637],\n",
      "        [ 6.2689, -0.1595, -0.1595,  ..., -1.0968, -1.8005, -0.3051],\n",
      "        ...,\n",
      "        [-0.1595, -0.1595, -0.1595,  ..., -0.1997,  0.4658, -1.1141],\n",
      "        [-0.1595, -0.1595, -0.1595,  ..., -0.0401,  0.4761, -1.1419],\n",
      "        [-0.1595, -0.1595, -0.1595,  ...,  0.0194,  0.5547, -1.1689]],\n",
      "       dtype=torch.float64)\n",
      "tensor([20.7049, 21.2929, 21.1667,  ..., 12.6134, 12.4772, 11.8117],\n",
      "       dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "X,y = torch.tensor(train1),torch.tensor(target)\n",
    "print(X,y,sep='\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "a6fb4570",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(torch.Size([2160, 93]),\n",
       " torch.Size([540, 93]),\n",
       " torch.Size([2160]),\n",
       " torch.Size([540]))"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 切割数据样本 20%验证集；80%训练集\n",
    "X_train, X_test, y_train, y_test =  train_test_split(X, y, test_size=0.2,random_state=42)\n",
    "#检查训练集和验证集中样本的形态\n",
    "X_train.shape,X_test.shape,y_train.shape,y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "9b42401a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_10252\\2710318108.py:1: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  X_train = torch.tensor(X_train,dtype=torch.float)\n",
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_10252\\2710318108.py:2: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  y_train = torch.tensor(y_train,dtype=torch.float32)\n",
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_10252\\2710318108.py:3: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  X_test = torch.tensor(X_test,dtype=torch.float32)\n",
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_10252\\2710318108.py:4: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  y_test = torch.tensor(y_test,dtype=torch.float32)\n"
     ]
    }
   ],
   "source": [
    "X_train = torch.tensor(X_train,dtype=torch.float)\n",
    "y_train = torch.tensor(y_train,dtype=torch.float32)\n",
    "X_test = torch.tensor(X_test,dtype=torch.float32)\n",
    "y_test = torch.tensor(y_test,dtype=torch.float32)\n",
    "test4 = torch.tensor(test4,dtype=torch.float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "0687e9e0",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(torch.Size([2160, 1, 1, 93]),\n",
       " torch.Size([540, 1, 1, 93]),\n",
       " torch.Size([2160, 1]),\n",
       " torch.Size([540, 1]),\n",
       " torch.Size([893, 1, 1, 93]))"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 转换样本数据形状为CNN所需的维度\n",
    "# 第一个维度表示样本数量，\n",
    "# 第二和第三个维度表示图像的高度和宽度（在这里我们使用1来表示）\n",
    "# 最后一个维度表示特征数量。\n",
    "X_train = X_train.reshape(X_train.shape[0], 1, 1, X_train.shape[1])\n",
    "y_train = y_train.reshape(y_train.shape[0], 1)\n",
    "X_test = X_test.reshape(X_test.shape[0], 1, 1, X_test.shape[1])\n",
    "y_test = y_test.reshape(y_test.shape[0], 1)\n",
    "# 转换测试集数据形状为CNN所需的维度\n",
    "test4 = test4.reshape(test4.shape[0], 1, 1, test4.shape[1])\n",
    "# 查看维度信息\n",
    "X_train.shape,X_test.shape,y_train.shape,y_test.shape,test4.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "76d80809",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构建卷积神经网络\n",
    "class CNNModel(nn.Module):\n",
    "    def __init__(self, input_channels, output_size):\n",
    "        super(CNNModel, self).__init__()\n",
    "        # 第一个卷积层：输入通道数为input_channels，输出通道数为16，卷积核大小为(1, 3)\n",
    "        self.conv1 = nn.Conv2d(input_channels, 16, kernel_size=(1, 3))\n",
    "        self.relu1 = nn.ReLU()  # 激活函数\n",
    "        self.maxpool1 = nn.MaxPool2d(kernel_size=(1, 2))  # 最大池化层\n",
    "        \n",
    "        # 第二个卷积层：输入通道数为16，输出通道数为32，卷积核大小为(1, 3)\n",
    "        self.conv2 = nn.Conv2d(16, 32, kernel_size=(1, 3))\n",
    "        self.relu2 = nn.ReLU()  # 激活函数\n",
    "        self.maxpool2 = nn.MaxPool2d(kernel_size=(1, 2))  # 最大池化层\n",
    "\n",
    "        self.flatten = nn.Flatten()  # 展平层\n",
    "        # 第一个全连接层：输入维度为672，输出维度为256\n",
    "        self.fc1 = nn.Linear(672 , 256)\n",
    "        self.relu3 = nn.ReLU()  # 激活函数\n",
    "        # 第二个全连接层：输入维度为256，输出维度为64\n",
    "        self.fc2 = nn.Linear(256 , 64)\n",
    "        # 第三个全连接层：输入维度为64，输出维度为1\n",
    "        self.fc3 = nn.Linear(64 , 1)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.conv1(x)  # 第一个卷积层\n",
    "        x = self.relu1(x)  # 激活函数\n",
    "        x = self.maxpool1(x)  # 最大池化层\n",
    "        \n",
    "        x = self.conv2(x)  # 第二个卷积层\n",
    "        x = self.relu2(x)  # 激活函数\n",
    "        x = self.maxpool2(x)  # 最大池化层\n",
    "\n",
    "        x = self.flatten(x)  # 展平\n",
    "        x = self.fc1(x)  # 第一个全连接层\n",
    "        x = self.relu3(x)  # 激活函数\n",
    "        x = self.fc2(x)  # 第二个全连接层\n",
    "        x = self.fc3(x)  # 第三个全连接层\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "9bf7ccdf",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义超参数\n",
    "# 输入数据的通道维度\n",
    "input_channels = 1\n",
    "# 最终输出的维度\n",
    "output_size = 1\n",
    "# 学习率\n",
    "lr = 0.001\n",
    "# 迭代次数\n",
    "num_epochs = 10001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "8641251e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 初始化模型\n",
    "model = CNNModel(input_channels, output_size)\n",
    "# 定义损失函数\n",
    "criterion = nn.MSELoss()\n",
    "# 设置优化器\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "479d85a9",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [100/10001], Loss: 7.3630\n",
      "Epoch [200/10001], Loss: 3.2681\n",
      "Epoch [300/10001], Loss: 2.0725\n",
      "Epoch [400/10001], Loss: 1.5214\n",
      "Epoch [500/10001], Loss: 1.2064\n",
      "Epoch [600/10001], Loss: 1.0219\n",
      "Epoch [700/10001], Loss: 0.8811\n",
      "Epoch [800/10001], Loss: 0.7695\n",
      "Epoch [900/10001], Loss: 0.7017\n",
      "Epoch [1000/10001], Loss: 0.6522\n",
      "Epoch [1100/10001], Loss: 0.6144\n",
      "Epoch [1200/10001], Loss: 0.5838\n",
      "Epoch [1300/10001], Loss: 0.5699\n",
      "Epoch [1400/10001], Loss: 0.5323\n",
      "Epoch [1500/10001], Loss: 0.5101\n",
      "Epoch [1600/10001], Loss: 0.5144\n",
      "Epoch [1700/10001], Loss: 0.4725\n",
      "Epoch [1800/10001], Loss: 0.4563\n",
      "Epoch [1900/10001], Loss: 0.4652\n",
      "Epoch [2000/10001], Loss: 0.4425\n",
      "Epoch [2100/10001], Loss: 0.4172\n",
      "Epoch [2200/10001], Loss: 0.4031\n",
      "Epoch [2300/10001], Loss: 0.4159\n",
      "Epoch [2400/10001], Loss: 0.4096\n",
      "Epoch [2500/10001], Loss: 0.3852\n",
      "Epoch [2600/10001], Loss: 0.3608\n",
      "Epoch [2700/10001], Loss: 0.3587\n",
      "Epoch [2800/10001], Loss: 0.3428\n",
      "Epoch [2900/10001], Loss: 0.3579\n",
      "Epoch [3000/10001], Loss: 0.3265\n",
      "Epoch [3100/10001], Loss: 0.3214\n",
      "Epoch [3200/10001], Loss: 0.3293\n",
      "Epoch [3300/10001], Loss: 0.3123\n",
      "Epoch [3400/10001], Loss: 0.4267\n",
      "Epoch [3500/10001], Loss: 0.3090\n",
      "Epoch [3600/10001], Loss: 0.3356\n",
      "Epoch [3700/10001], Loss: 0.2922\n",
      "Epoch [3800/10001], Loss: 0.2772\n",
      "Epoch [3900/10001], Loss: 0.2830\n",
      "Epoch [4000/10001], Loss: 0.2666\n",
      "Epoch [4100/10001], Loss: 0.2720\n",
      "Epoch [4200/10001], Loss: 0.2605\n",
      "Epoch [4300/10001], Loss: 0.2757\n",
      "Epoch [4400/10001], Loss: 0.2486\n",
      "Epoch [4500/10001], Loss: 0.2581\n",
      "Epoch [4600/10001], Loss: 0.2434\n",
      "Epoch [4700/10001], Loss: 0.2376\n",
      "Epoch [4800/10001], Loss: 0.2304\n",
      "Epoch [4900/10001], Loss: 0.2466\n",
      "Epoch [5000/10001], Loss: 0.3851\n",
      "Epoch [5100/10001], Loss: 0.2352\n",
      "Epoch [5200/10001], Loss: 0.2123\n",
      "Epoch [5300/10001], Loss: 0.2106\n",
      "Epoch [5400/10001], Loss: 0.2266\n",
      "Epoch [5500/10001], Loss: 0.2078\n",
      "Epoch [5600/10001], Loss: 0.2378\n",
      "Epoch [5700/10001], Loss: 0.2145\n",
      "Epoch [5800/10001], Loss: 0.1903\n",
      "Epoch [5900/10001], Loss: 0.2281\n",
      "Epoch [6000/10001], Loss: 0.2308\n",
      "Epoch [6100/10001], Loss: 0.2440\n",
      "Epoch [6200/10001], Loss: 0.1810\n",
      "Epoch [6300/10001], Loss: 0.2101\n",
      "Epoch [6400/10001], Loss: 0.1762\n",
      "Epoch [6500/10001], Loss: 0.1709\n",
      "Epoch [6600/10001], Loss: 0.4111\n",
      "Epoch [6700/10001], Loss: 0.1655\n",
      "Epoch [6800/10001], Loss: 0.1914\n",
      "Epoch [6900/10001], Loss: 0.1913\n",
      "Epoch [7000/10001], Loss: 0.1589\n",
      "Epoch [7100/10001], Loss: 0.1736\n",
      "Epoch [7200/10001], Loss: 0.1618\n",
      "Epoch [7300/10001], Loss: 0.1624\n",
      "Epoch [7400/10001], Loss: 0.1557\n",
      "Epoch [7500/10001], Loss: 0.2713\n",
      "Epoch [7600/10001], Loss: 0.1461\n",
      "Epoch [7700/10001], Loss: 0.1541\n",
      "Epoch [7800/10001], Loss: 0.1868\n",
      "Epoch [7900/10001], Loss: 0.1418\n",
      "Epoch [8000/10001], Loss: 0.1412\n",
      "Epoch [8100/10001], Loss: 0.1441\n",
      "Epoch [8200/10001], Loss: 0.1556\n",
      "Epoch [8300/10001], Loss: 0.1382\n",
      "Epoch [8400/10001], Loss: 0.1552\n",
      "Epoch [8500/10001], Loss: 0.1504\n",
      "Epoch [8600/10001], Loss: 0.1308\n",
      "Epoch [8700/10001], Loss: 0.1412\n",
      "Epoch [8800/10001], Loss: 0.1349\n",
      "Epoch [8900/10001], Loss: 0.3409\n",
      "Epoch [9000/10001], Loss: 0.1321\n",
      "Epoch [9100/10001], Loss: 0.1290\n",
      "Epoch [9200/10001], Loss: 0.1303\n",
      "Epoch [9300/10001], Loss: 0.1260\n",
      "Epoch [9400/10001], Loss: 0.1264\n",
      "Epoch [9500/10001], Loss: 0.1184\n",
      "Epoch [9600/10001], Loss: 0.2056\n",
      "Epoch [9700/10001], Loss: 0.1317\n",
      "Epoch [9800/10001], Loss: 0.1261\n",
      "Epoch [9900/10001], Loss: 0.1756\n",
      "Epoch [10000/10001], Loss: 0.1089\n"
     ]
    }
   ],
   "source": [
    "# 定义存储损失的列表\n",
    "train_losses = []\n",
    "train_epochs = []\n",
    "\n",
    "# 模型训练\n",
    "for epoch in range(num_epochs):\n",
    "    inputs = torch.Tensor(X_train)  # 将输入数据转换为torch.Tensor类型\n",
    "    labels = torch.Tensor(y_train)  # 将标签数据转换为torch.Tensor类型\n",
    "    \n",
    "    optimizer.zero_grad()  # 清空优化器的梯度信息，准备进行反向传播和参数更新\n",
    "    \n",
    "    outputs = model(inputs)  # 输入数据经过模型得到输出结果\n",
    "    loss = criterion(outputs.squeeze(), labels.squeeze())  # 计算损失值\n",
    "    \n",
    "    loss.backward()  # 反向传播，计算参数的梯度\n",
    "    optimizer.step()  # 使用优化器更新模型的参数\n",
    "    \n",
    "    if (epoch+1) % 100 == 0:\n",
    "        train_losses.append(loss.item())  # 将当前的损失值添加到train_losses列表中\n",
    "        train_epochs.append(epoch+1)  # 将当前的训练轮次添加到train_epochs列表中\n",
    "        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')  # 打印当前轮次的损失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "a2751ecc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEUCAYAAAA/Yh00AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAsV0lEQVR4nO3deXxU9b3/8ddnZjKTlUAg7CAIKogoKi7F2uK+tIhaW5frWi23rVTvtdd7tXb5tbVeu9qrrVrUurRqe6+3bvVarQtVrFZxBRcE2ZElCYSQPTPz+f1xTkKAADEwCTN5Px+PPDLLmXO+3yG85zuf8z3nmLsjIiK5I9LTDRARkd1LwS4ikmMU7CIiOUbBLiKSYxTsIiI5RsEukmEWKOrpdkjvoWCXPY6ZXWpmJ36C5ceZWWyrx64ws4HbWX6ume3XxbYdY2af7eSySTMrBsYAi3aw3Mlmtn+7+2eZ2WfNTP8/pUv0hyN7or8APzez0wHM7Idm9jkzG2hmR4SPvRv+NuDPwOTWF4dh+q9AzXbW3wg0hcteb2YfmNmc8GeRmX29/cJmdqiZXRzePQo4spP9aHD32nBbTR0tEIb3z4H8dg8fBUwCvm9mV3dyWyJtFOyyx3H3VcCpBCNdgBiQB+wDfC18rCH8fRLwCvC2mV1rZq8CbwBR4Bkze8nM3jazEjMbbWbnAgOA081sX6AF+DVwfvhzN5DcqkkXtbudAupb75hZPPxw6UiqtUs76O75wJ+ARjM7LnysjuDD50ZgrZkdvoPXi2wjtvNFRLqPmR0MHAykgZvDh1sIwjHVwUu+CVxGEL5D3f1wM3sE+I67z9tq3f0IQrk1nFuAOcDRwMXtFn2r3WvKgbOAKWY2ExgMpMysNewTwJnAwnD5DQRllyag2MzmAHFgcHg7Hxjp7gPNrPWD6lTgTuAdM+sPTAGGAV8C1gOFwKs7f/dEAgp22dPEgRLgu8B/E4RvnA5GvWZ2PjAIuAQ4HbjdzN4ERgC/MbMqd5/Wury7LweWh+WNp4G1wP+w7f+Dg4Azwtu3ANe7+63hNq8Hlrj7XdtpfwvwRXdfambV7v5pMxsOzAlvjwX+Fi57MjAEeDFsy38TfEAtAF509++FpZpDzay/u1ft7M0TAZViZA/j7v9w9/8CNgHN4cPFBKWJrT0N/AswCvixu98OPEkwCj6PoHzTxsyiZnYYwaj7/wjq8oPdfVK4/EnA8cDe4fIR4GFgVrvV9GXLUoyZWaLd8+nOdDP8fau7jwLeBS4HlhHsLwA408yeAf4OXA3078R6RQCN2CU77AcsJwjVNu6+zsxagKi7PxiWMb4JvE4Q6mPN7GVgk7ufCFxIEKD5wOfd/YN25fHvE4TqE2wO3r2AbwNXt1vuAOBiM/tmeN+AhJkd5O6tpaL/MbMdlWLaumBm1wCrCEo3E4BzgPeAI4DTgEuB1939wy68b9JLKdhlT3aomS0kCNgFBGHXxswGAI8B75nZS8DtBCPbwQQ7QG8nCPLl4Uvud/e7w4Bt/QYQD3/3A94Mb+cBuPsSYGK77Y0nCP4m4DJ3f2s77d5ZKWZ2uNwg4Mqwbz8EfuXuM8NtfZ3gm8elwLmdeK9E2ijYZU8VIdih+DvgFXd3M4u3X8DdK83sDGA+QRgPINiROpWgRAMwI1zX1e7ezLauDIN3X4KdqvnAVVsvFH6I/AGYCVQDD5vZpe7+XFc76O6rgSHhwUuTwja8EpaAlhFM2TwEqOjqNqR3UrDLHieciTIIuJZgJNu6I3M58L/h7aJwuuLngBsIpgguA8YT1MqHE9S7vwu8aWaPAy+F6y1j8wybpcBTwL8Tzh0n2PH6nLu3hO05iWAn6k/c/f/Cx84B/mhm8wlq8E+5exNBaaZTpRgzOx64F1hDMDvnWTObSDAb6MOwD0cCB5vZCnf/7S68rdKbuLt+9LNH/RDMQZ8OFAGnbGeZ7xDU3q8GBoSPfZegFHMqsBqYGT4+haA2HiGYNngHwQj/KWAucGy79fYDHgS+SDA7502Cmv0RHbShMGzHW0Cf8LFqYNQO+jYWWBfejhFM0Wx9bjrBh9MZ4f1RwAcEB1qN6el/F/1kz4+56wpKkltaD8V39x3OUDGzEnfftJNlxgELvJv+o5hZ3NuVjMLyUx93r+yO7UtuULCLiOQYzWMXEckxCnYRkRyjYBcRyTE9Pt1xwIABPmrUqJ5uhohIVnn99dcr3b28o+d6PNhHjRrF3Llze7oZIiJZxcyWbe85lWJERHKMgl1EJMco2EVEckyP19hFpPdpaWlh5cqVNDZ2dJp9aS8/P5/hw4eTl5e384VDCnYR6XYrV66kpKSEUaNGsf1Lxoq7U1VVxcqVKxk9enSnX6dSjIh0u8bGRvr3769Q3wkzo3///p/4m03WBnsylebj6gZqm7a+oLyIZINsDvWmpqZu21ZX3qesDfY1NY1MufE5/u+d1T3dFBHJUr/+9a+pq6vb4TJr167l6quvbrtfVVXF6aefvs1yixYt4oILLgDgnnvuYcKECUydOpWpU6dus/zChQtJp9Pcf//93HTTTbvcj61lbbDHY0HTm5KpnSwpItKxcePGMX36dOrq6rjllluYPXs2Tz/9NDU1NXz1q19l7dq13H333RxxxBG88cYbnHvuuXzpS1+iqqqKiy++mPPOO48PP/yQefPm8fDDD7NkyRKeffZZ8vLy+NrXvsadd97JnXfeSTQabdtmOp3m/PPPp66ujkgkQiKR2EELuyZrd54mwjeqKdmZi8KLiGzruOOOo0+fPiQSCdLpNKlUikcffZR9992XWCxGS0sLb775JjNnzmT69Ok888wznHXWWTz66KMUFxe3reejjz6ivLycgoICSktLGThwIE888QQPPfQQAOedd17bsvfffz/V1dV88YtfZPXq1aRSKR577DFaWlo444wzmDlz5i73K2uDvXXE3pxSsItks+8//i7vfVyzW9e5/9A+fG/ahB0uM2vWLB5//HGOP/54DjvssLbH29e0//CHP1BVVcWZZ57JGWecwdFHH826des46qijuPHGGznllFMAGDNmDNFolNmzZzN69GiuvPJKVq5c2baeBx98kFNPPZVoNMqjjz7KG2+8QVFREbNmzSI/P58LL7xwt/Y/+4NdI3YR6YIZM2aw//778/TTTwPQ0NBALLZlJF544YWcfPLJ3HDDDcycOZOPP/6Y6dOn8/LLL5OXl0cymSQWi/HBBx9wxx138Ne//pUnnniCNWvWMHv2bGbNmsUll1zCtGnTyMvL4+2332bt2rV84QtfAGDx4sUkEgkeeOABAOrr67n55puZNGnSLvUta4M9GjGiEVOwi2S5nY2sMy0SCQaJixcvbgvcVmbGz372M6666irmz5/P/Pnzefvtt1m6dCklJSWUlJTw8MMPs2rVKsaOHcsJJ5zAhRdeyL333gvAr371K2bMmAEEtfVDDz2UF198EQgO0poyZQqxWIzf/e53lJd3eKLGLsnaYAdIxCIKdhHZJRs3buS5557jww8/ZJ999tniuQULFrBgwQLuu+8+jjvuOO666y4effRRamtrKS0tJS8vj+LiYo477jjGjBnDP/7xDwAmTZrE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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制损失函数曲线图\n",
    "plt.plot(train_epochs, train_losses, label='训练损失')\n",
    "plt.xlabel('迭代次数')\n",
    "plt.ylabel('损失值')\n",
    "plt.title('训练损失曲线')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "id": "4ef8d979",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模型预测\n",
    "test_inputs = torch.Tensor(X_test)\n",
    "predictions = model(test_inputs).squeeze().detach().numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "id": "b08db7f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化分析\n",
    "plt.plot(y_test.squeeze(), label='Actual')\n",
    "plt.plot(predictions, label='Predicted')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "04f37219",
   "metadata": {},
   "outputs": [],
   "source": [
    "predictions = model(test4).squeeze().detach().numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "17ea543a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([19.668873 ,  8.434598 , 10.708077 , 13.104383 ,  4.2547183,\n",
       "       24.083094 , 23.42541  ,  9.546169 , 11.248472 , 12.109412 ,\n",
       "       20.088808 , 20.290169 , 22.77393  , 14.8046   , 21.467606 ,\n",
       "       19.873589 , 30.049393 , 12.32856  , 23.996658 ,  4.5226736,\n",
       "        8.0774145, 22.234016 , 21.700096 , 17.617393 , 13.81393  ,\n",
       "       28.330742 , 21.240263 , 28.058035 , 13.273284 , 20.985756 ,\n",
       "       12.040177 ,  9.866227 , 26.064373 , 12.089115 , 18.584158 ,\n",
       "       38.13942  , 13.917663 , 10.72149  , 14.871673 , 13.853071 ,\n",
       "       17.002651 ,  2.413797 , 11.68784  , 22.28408  , 10.190134 ,\n",
       "       14.26324  , 14.4725895,  3.441207 ,  5.73801  , 21.377254 ,\n",
       "       16.499184 , 10.353593 , 12.776345 ,  9.812819 , 15.304412 ,\n",
       "       30.685726 , 13.051032 , 16.486708 , 32.419018 , 10.615436 ,\n",
       "       17.732065 , 22.595165 , 27.026237 , 24.187637 , 17.915165 ,\n",
       "        4.762652 , 11.425194 , 20.422075 , 34.841244 , 15.766372 ,\n",
       "       22.171936 , 15.216602 , 15.9238615, 23.931778 , 13.610852 ,\n",
       "       12.422083 , 15.875125 , 17.36819  ,  7.8899026,  9.633158 ,\n",
       "       19.410988 ,  9.820911 , 10.808835 , 18.04224  , 13.087907 ,\n",
       "       15.272311 , 23.651093 , 13.159049 ,  4.649996 , 20.825642 ,\n",
       "       26.951006 , 35.099308 , 19.298439 ,  7.405849 , 14.648114 ,\n",
       "       11.342738 , 11.989411 , 20.918163 , 14.240408 , 13.566274 ,\n",
       "       14.259816 , 10.947164 , 14.269035 , 13.217067 , 10.170943 ,\n",
       "       33.57911  , 26.22396  ,  9.810271 , 19.28015  , 12.672034 ,\n",
       "       13.815481 ,  7.7749486, 19.364872 , 24.575153 , 12.407414 ,\n",
       "       11.073845 ,  9.840291 , 29.015034 , 19.235996 , 13.50334  ,\n",
       "       12.851053 , 23.882198 , 11.587262 , 21.906712 , 32.981483 ,\n",
       "       13.350839 , 13.113024 , 10.739974 ,  3.893003 , 10.719196 ,\n",
       "       15.7818165, 10.905425 , 13.021314 , 14.466815 , 22.462692 ,\n",
       "       19.50518  , 22.95097  ,  7.1381702, 19.128204 , 26.73944  ,\n",
       "       24.494974 , 15.561445 , 22.64378  , 26.76962  , 12.933645 ,\n",
       "       37.238655 , 10.781306 , 12.511666 , 20.75136  , 16.294119 ,\n",
       "       25.404978 ,  9.873567 , 21.55983  ,  9.254787 , 30.822145 ,\n",
       "       20.45773  , 17.80487  , 30.49127  , 16.982895 , 13.2618065,\n",
       "       20.015879 , 23.17548  , 11.813419 , 19.611643 , 12.774948 ,\n",
       "       24.142918 , 24.14952  , 20.277443 , 29.028439 , 20.695662 ,\n",
       "       10.450992 , 10.28356  , 23.396023 , 40.66318  , 23.0164   ,\n",
       "        8.368375 , 14.147064 , 37.718185 , 28.164417 , 20.56905  ,\n",
       "       15.534266 , 21.165476 , 21.056124 ,  9.29975  , 19.776018 ,\n",
       "       11.358112 , 19.436691 ,  2.9942799, 11.844268 , 25.247437 ,\n",
       "        1.8901043, 24.315895 , 26.102402 , 10.0225935, 14.399088 ,\n",
       "       35.07995  , 10.804933 , 24.576893 , 10.298457 , 15.626876 ,\n",
       "       27.49733  , 12.15093  , 22.742607 , 17.83897  , 27.069048 ,\n",
       "       25.791199 , 13.430199 , 25.428461 , 13.753825 ,  6.4256425,\n",
       "       11.419169 , 18.009176 , 32.01705  , 10.587617 , 10.499169 ,\n",
       "       11.491912 ,  9.7403555, 10.436698 , 11.870293 ,  8.665068 ,\n",
       "       17.885967 , 13.008394 , 12.199813 , 14.431009 , 21.876926 ,\n",
       "       19.508156 , 16.120514 , 10.465495 , 12.534976 , 32.11228  ,\n",
       "       16.97184  , 10.663333 , 13.490798 , 20.141747 ,  9.344751 ,\n",
       "       32.62786  , 19.919624 , 20.170267 , 20.338585 , 29.993181 ,\n",
       "       11.32113  , 24.513748 , 27.093916 , 25.570568 ,  9.048867 ,\n",
       "        9.992415 , 12.962215 , 23.00875  , 16.71414  , 10.762441 ,\n",
       "       19.447205 , 17.286015 , 22.336832 , 10.84105  , 10.760078 ,\n",
       "       10.506357 , 10.312301 , 17.030495 , 17.469336 , 14.09078  ,\n",
       "       14.632434 ,  4.4887414, 14.027965 , 21.351175 , 11.258662 ,\n",
       "        9.177796 , 29.100967 , 25.701683 ,  7.737512 , 13.304376 ,\n",
       "       15.102206 ,  6.8285766, 17.449509 , 11.929229 , 10.874682 ,\n",
       "       17.486473 , 22.389828 ,  7.878238 , 13.880599 , 16.004036 ,\n",
       "       20.565453 , 20.389042 , 21.496185 , 22.522907 , 18.321194 ,\n",
       "       21.482548 , 25.530119 , 26.582893 ,  9.909416 , 16.933819 ,\n",
       "       17.05164  , 15.218284 ,  6.610473 ,  3.7508163, 22.714321 ,\n",
       "       13.7202   , 10.410347 , 22.204977 , 12.495418 , 10.063775 ,\n",
       "       10.724729 , 22.30838  , 10.755062 , 13.936179 , 15.119395 ,\n",
       "       19.649689 , 19.8614   , 26.562288 , 11.347215 , 10.65272  ,\n",
       "       10.160619 , 21.952877 ,  9.945665 , 21.118137 , 15.2985525,\n",
       "       18.032507 , 27.621979 , 18.262365 , 21.775236 , 14.018029 ,\n",
       "        5.28645  , 10.403348 , 24.53462  , 15.390076 , 15.464983 ,\n",
       "       22.242332 ,  2.2781808, 27.386784 , 18.310965 , 21.612427 ,\n",
       "        7.581811 , 23.902401 , 15.277953 , 10.492982 , 14.391003 ,\n",
       "       12.728726 , 25.281397 , 11.183847 ,  8.442058 , 24.588142 ,\n",
       "       13.021592 ,  9.043904 , 20.32811  , 13.324648 ,  2.0377069,\n",
       "       15.517551 , 29.94933  , 20.718197 , 18.236004 , 14.820092 ,\n",
       "       14.068788 , 24.87699  , 20.015144 , 17.014118 ,  7.047048 ,\n",
       "       13.773105 , 22.372347 , 12.992145 , 24.256756 , 19.131218 ,\n",
       "        4.8577685, 15.616573 , 12.380044 , 10.561475 , 16.035107 ,\n",
       "       29.617538 , 13.930674 , 18.815327 ,  7.360776 , 10.68584  ,\n",
       "       15.416552 , 14.201341 , 14.719367 , 13.791135 ,  3.8452525,\n",
       "        8.412662 , 12.962778 ,  9.004063 ,  9.090905 , 18.120108 ,\n",
       "       27.760038 , 10.425292 ,  9.867498 , 19.726698 , 13.545533 ,\n",
       "       16.971542 , 16.204132 , 20.680079 , 17.708042 , 16.199192 ,\n",
       "       29.16161  , 10.206572 , 31.862906 , 15.985391 , 11.043471 ,\n",
       "       11.654244 , 30.716755 , 19.608532 , 23.062628 , 15.942826 ,\n",
       "       16.099281 , 21.369698 , 10.22259  , 28.721004 , 27.699488 ,\n",
       "       11.83138  , 12.855994 , 30.038956 , 11.174761 , 14.480365 ,\n",
       "       16.865086 , 10.404978 , 21.424904 , 10.472795 , 11.439041 ,\n",
       "       20.322048 , 20.595524 , 23.020008 , 27.453434 , 12.333424 ,\n",
       "       14.294068 ,  7.1209617, 11.60693  , 11.086862 , 21.71706  ,\n",
       "       15.465211 , 18.968628 ,  9.330081 , 33.851784 , 20.046223 ,\n",
       "        9.077114 , 19.419498 , 15.267686 , 13.415278 , 10.660577 ,\n",
       "       22.197601 , 30.815033 , 15.808227 ,  3.4696531,  1.718404 ,\n",
       "       13.335994 , 10.1894245, 20.344707 , 18.530672 , 15.81936  ,\n",
       "        4.429932 ,  4.3960366, 11.532516 , 23.426464 , 24.672356 ,\n",
       "       14.690309 , 13.922669 , 29.954086 , 18.423836 ,  9.719819 ,\n",
       "       12.194846 , 23.077423 , 18.500744 , 24.019138 , 10.398896 ,\n",
       "       21.3134   ,  8.616055 , 18.12534  , 11.112752 ,  9.094592 ,\n",
       "       11.124406 ,  8.5981   , 10.268677 ,  8.608327 , 21.966448 ,\n",
       "       20.455727 , 11.917523 , 23.570616 , 13.144267 , 13.142125 ,\n",
       "        4.4611506, 12.435998 , 18.864851 , 21.825315 , 23.690693 ,\n",
       "       23.795086 , 20.13922  , 28.211475 , 22.435217 , 21.599499 ,\n",
       "       12.072845 , 17.132423 , 16.018085 , 20.416288 ,  9.26374  ,\n",
       "        8.588715 , 21.69043  , 20.257267 , 11.841493 , 17.771645 ,\n",
       "       13.744046 , 16.023514 ,  9.887626 ,  4.5430765, 13.346553 ,\n",
       "       15.084146 , 10.239009 , 16.466698 , 12.773162 , 28.381788 ,\n",
       "       26.185993 , 22.200447 , 10.803714 , 10.513034 , 17.136486 ,\n",
       "       18.388744 , 13.118451 , 17.97093  ,  8.021964 , 22.978691 ,\n",
       "        9.155976 , 15.463732 , 12.628768 , 13.029439 , 23.455044 ,\n",
       "       31.341208 , 14.587359 , 15.4236145, 28.771244 , 14.202964 ,\n",
       "       37.446327 ,  2.2120786, 21.55634  , 20.89059  ,  6.0237203,\n",
       "       18.07999  ,  8.686053 , 10.688861 , 13.883581 , 23.177496 ,\n",
       "        1.9657695, 24.488613 ,  9.729287 , 28.103546 , 14.044461 ,\n",
       "       42.120735 , 16.939375 , 23.470833 ,  8.343741 , 12.547007 ,\n",
       "        7.8766584,  9.816169 , 28.829618 , 19.8758   ,  9.439269 ,\n",
       "       13.442442 ,  8.781419 , 20.613743 , 27.095612 , 18.333279 ,\n",
       "        5.919498 , 11.034671 , 10.8849535, 23.137642 , 14.592839 ,\n",
       "       13.520255 , 15.561362 , 19.630228 , 18.604216 , 21.24046  ,\n",
       "        9.026382 , 22.613274 , 20.013056 ,  7.7164235, 28.27687  ,\n",
       "       18.5074   , 12.857    , 27.391743 , 25.393597 ,  8.266401 ,\n",
       "       19.165987 , 21.20877  , 34.791744 , 20.93346  , 20.89815  ,\n",
       "       13.596369 , 10.651958 , 13.811429 , 13.555873 , 20.322874 ,\n",
       "        8.287818 , 27.707933 , 13.443955 , 14.10833  , 10.677519 ,\n",
       "       11.395214 , 23.52294  , 20.018902 , 32.153534 , 27.061752 ,\n",
       "       26.617964 , 12.855729 , 15.887459 , 25.203259 , 20.81956  ,\n",
       "        7.9735003, 10.682914 , 15.030025 , 16.26043  , 18.99134  ,\n",
       "       17.821629 , 19.073853 , 30.900726 ,  9.894877 , 23.47425  ,\n",
       "        4.8645372, 19.187935 , 11.941281 , 27.68961  , 28.594976 ,\n",
       "        9.166606 , 23.93452  , 10.722234 , 22.063625 , 13.08384  ,\n",
       "       11.377237 , 11.090034 , 13.071723 , 22.872925 , 13.365411 ,\n",
       "       24.375286 , 11.758082 , 15.428603 , 16.011446 , 10.649974 ,\n",
       "       26.950508 , 18.78225  , 21.226198 , 23.248241 , 21.999588 ,\n",
       "       11.8944235, 16.373579 , 10.960532 , 15.842581 , 21.011784 ,\n",
       "       10.749354 , 10.54652  , 28.278967 , 27.571945 , 23.004684 ,\n",
       "       27.381416 , 10.107786 , 29.921862 ,  9.156012 , 10.2675295,\n",
       "       18.077679 , 17.578724 , 12.268506 , 12.695727 , 13.108624 ,\n",
       "       11.652028 , 13.363473 , 29.239952 , 11.126027 ,  9.540578 ,\n",
       "       25.572193 , 25.487442 ,  9.459603 , 12.151043 ,  9.124595 ,\n",
       "        8.17135  , 28.300846 ,  8.57985  , 21.026592 , 20.731857 ,\n",
       "       12.998884 ,  8.693022 , 13.361205 , 16.224281 ,  3.0989785,\n",
       "       12.529781 , 18.912739 , 30.970598 , 17.176067 , 11.806463 ,\n",
       "       13.1855   , 11.384703 , 16.289227 , 21.24424  ,  3.9674382,\n",
       "       26.468884 , 19.50882  , 11.524291 ,  8.09592  , 14.2920475,\n",
       "       21.319332 ,  9.778296 , 17.351181 , 12.357408 ,  3.3467793,\n",
       "       10.319112 , 23.094458 , 26.738914 , 22.657146 ,  7.7555184,\n",
       "        7.3455772, 13.30736  , 18.535828 , 12.67612  , 31.571232 ,\n",
       "        9.377595 , 15.858927 , 11.835849 , 14.0666895, 13.074054 ,\n",
       "       19.104836 , 11.032697 , 27.252897 ,  8.284766 ,  6.866607 ,\n",
       "        3.418777 , 12.496008 , 21.642399 ,  9.82557  , 23.52185  ,\n",
       "        9.934156 ,  7.8226686, 21.194492 , 26.99442  , 10.392547 ,\n",
       "       20.014088 , 12.9789915,  8.6756525, 10.132905 , 16.59541  ,\n",
       "       10.520255 , 14.53723  , 20.999712 ,  6.7154193, 21.151249 ,\n",
       "       12.804613 ,  9.39284  , 26.688326 ,  6.0659547, 24.64067  ,\n",
       "       15.841437 , 15.133258 , 11.782716 , 22.400688 , 17.440649 ,\n",
       "       21.58454  , 25.430664 , 28.012365 , 13.019613 , 10.114902 ,\n",
       "       15.103303 , 23.189613 ,  8.753259 , 12.072961 , 22.936592 ,\n",
       "       23.128382 , 21.913372 , 14.381146 ,  9.398403 , 13.054085 ,\n",
       "       14.329509 , 12.411256 ,  7.254315 , 23.260986 , 28.502329 ,\n",
       "       20.12479  , 22.472202 , 10.886985 , 12.063527 , 11.766649 ,\n",
       "       17.456999 , 15.141032 , 23.644897 , 17.964252 ,  2.6545606,\n",
       "       11.819734 , 23.606781 , 22.271603 , 18.453354 ,  9.352371 ,\n",
       "       26.460665 , 30.867867 , 17.089504 , 23.421059 , 13.755172 ,\n",
       "        8.092122 ,  5.0362163, 23.933586 , 26.429796 , 11.177316 ,\n",
       "       17.581635 ,  6.093267 , 11.69508  , 12.017569 , 10.5726595,\n",
       "       19.391754 , 14.671477 , 16.483032 ,  9.379664 , 16.41836  ,\n",
       "       14.504351 , 10.82513  , 11.379571 , 13.645006 , 10.275598 ,\n",
       "       22.042065 , 14.122982 , 19.084654 , 16.43451  , 26.645508 ,\n",
       "       19.606335 , 18.184322 , 13.526799 , 15.124101 ,  9.028375 ,\n",
       "        3.7105238,  8.2864895, 16.706758 , 28.752434 ,  8.6128   ,\n",
       "       22.916733 , 16.197748 , 18.86559  , 24.42554  , 28.80045  ,\n",
       "        8.211943 , 10.407156 , 19.457539 , 24.337683 , 19.281065 ,\n",
       "       17.636879 , 14.194894 , 13.387568 , 10.646225 , 14.786886 ,\n",
       "       26.613052 , 12.430488 , 16.460754 , 21.152052 , 13.00865  ,\n",
       "       20.627766 , 40.076607 , 32.885056 , 19.266827 , 19.851511 ,\n",
       "       15.428023 , 13.395343 , 18.417362 , 11.019061 , 13.106872 ,\n",
       "        2.5201225,  7.6433525,  7.393165 , 11.840428 ,  8.229924 ,\n",
       "       28.211605 , 23.799335 , 18.641273 , 15.485182 , 17.980167 ,\n",
       "       21.52577  , 22.101892 , 19.615917 , 20.08274  , 12.222726 ,\n",
       "        7.594158 , 11.201053 , 11.893728 , 29.624283 , 26.015862 ,\n",
       "       11.066897 , 14.895277 , 14.722127 , 30.292679 , 24.819878 ,\n",
       "       20.87218  , 17.008593 , 10.209784 , 16.208496 , 14.215512 ,\n",
       "        8.297226 , 11.921344 ,  8.736767 , 15.16305  , 26.16666  ,\n",
       "       16.361181 , 28.36873  , 20.66138  , 11.441741 ,  7.910501 ,\n",
       "       35.76031  , 23.813013 , 16.804731 ], dtype=float32)"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "id": "030e08cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入 sampleSubmission 表\n",
    "sampleSubmission = pd.read_csv(r'C:\\Users\\Administrator\\Desktop\\3-COVID-19\\sampleSubmission.csv', sep = ',')\n",
    "# 创建新表\n",
    "CNN_sampleSubmission = pd.DataFrame()\n",
    "CNN_sampleSubmission .to_csv(r'C:\\Users\\Administrator\\Desktop\\3-COVID-19\\CNN_sampleSubmission.csv', index=False)\n",
    "# 写入id列\n",
    "CNN_sampleSubmission[\"id\"] =sampleSubmission[\"id\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "id": "d3cde334",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将数据写入特定一列\n",
    "CNN_sampleSubmission['tested_positive'] = predictions[:len(sampleSubmission)]  # 只写入与数据帧行数相匹配的部分数组数据\n",
    "# 写回 CSV 文件\n",
    "CNN_sampleSubmission.to_csv(r'C:\\Users\\Administrator\\Desktop\\3-COVID-19\\CNN_sampleSubmission.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "id": "1abed164",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>tested_positive</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>19.668873</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>8.434598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>10.708077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>13.104383</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4.254718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>888</td>\n",
       "      <td>11.441741</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>889</td>\n",
       "      <td>7.910501</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>890</td>\n",
       "      <td>35.760311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>891</th>\n",
       "      <td>891</td>\n",
       "      <td>23.813013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>892</th>\n",
       "      <td>892</td>\n",
       "      <td>16.804731</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>893 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  tested_positive\n",
       "0      0        19.668873\n",
       "1      1         8.434598\n",
       "2      2        10.708077\n",
       "3      3        13.104383\n",
       "4      4         4.254718\n",
       "..   ...              ...\n",
       "888  888        11.441741\n",
       "889  889         7.910501\n",
       "890  890        35.760311\n",
       "891  891        23.813013\n",
       "892  892        16.804731\n",
       "\n",
       "[893 rows x 2 columns]"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CNN_sampleSubmission"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9e45a3b5",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
